﻿using ATEC.ATDataCoreNET;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LevelExample
{
    /// <summary>
    /// 分类：玄镜BIM图形平台/C#开发/示例代码/颜色转换/颜色转换窗体示例。
    /// 内容：通过Windows窗体应用演示如何在GUI中实现RGB到颜色索引的转换，以及索引到RGB颜色的转换。
    /// 功能：
    /// - 提供按钮事件处理程序用于触发颜色转换功能。
    /// - 演示如何使用 `ColorExample` 类的方法来处理颜色与索引的转换，并通过按钮点击进行触发。
    /// 关键类及说明：
    /// - **ColorExample**: 提供静态方法来执行RGB与颜色索引之间的转换。
    /// - **RgbColorDef**: 表示RGB颜色，包含红、绿、蓝通道的值。
    /// - **Form**: 窗体类，用于创建和管理用户界面。
    /// 注意：
    /// - 此示例依赖于Windows窗体应用程序，并假设存在按钮 `btn_RGBToIndex` 和 `btn_IndexToRGB`，用于触发相应操作。
    /// </summary>
    public partial class ColorExampleForm : Form
    {
        /// <summary>
        /// 构造函数，初始化窗体组件
        /// </summary>
        public ColorExampleForm()
        {
            InitializeComponent(); // 初始化窗体组件，自动生成的代码
        }

        /// <summary>
        /// 点击“RGB转索引”按钮时触发的事件
        /// 功能：演示如何将RGB颜色转换为颜色索引，并打印转换结果
        /// </summary>
        private void btn_RGBToIndex_Click(object sender, EventArgs e)
        {
            // 创建RGB颜色定义对象1 (RGB: 225, 117, 0)
            RgbColorDef colorDef1 = new RgbColorDef(225, 117, 0);

            // 调用ColorExample类的Print_RGBToIndex方法，打印颜色及其对应的颜色索引
            ColorExample.Print_RGBToIndex(colorDef1);

            // 创建RGB颜色定义对象2 (RGB: 195, 195, 0)
            RgbColorDef colorDef2 = new RgbColorDef(195, 195, 0);

            // 调用Print_RGBToIndex方法，打印第二个颜色的RGB及对应索引
            ColorExample.Print_RGBToIndex(colorDef2);
        }

        /// <summary>
        /// 点击“索引转RGB”按钮时触发的事件
        /// 功能：演示如何根据颜色索引获取对应的RGB颜色值，并打印转换结果
        /// </summary>
        private void btn_IndexToRGB_Click(object sender, EventArgs e)
        {
            // 定义颜色索引1 (例如，索引38)
            int index1 = 38;

            // 调用ColorExample类的Print_IndexToRGB方法，打印颜色索引及其对应的RGB值
            ColorExample.Print_IndexToRGB(index1);

            // 定义颜色索引2 (例如，索引68)
            int index2 = 68;

            // 调用Print_IndexToRGB方法，打印第二个颜色索引及对应的RGB值
            ColorExample.Print_IndexToRGB(index2);
        }
    }

}
